from Clases.Instruccion import Instruccion
from Clases.Kernel import Kernel
from Clases.Programa  import Programa
from Clases.RR import RR
from Clases.Fifo import Fifo
from Clases.Priority import Priority
from Clases.MMU import MMU
from Clases.AsignacionContinua import AsignacionContinua
from Clases.PrimerAjuste import PrimerAjuste
from Clases.PeorAjuste import PeorAjuste
from Clases.MejorAjuste import MejorAjuste
from Clases.Paginacion import Paginacion


'''
# es para verificar si el RR puede o no contener otro RR
f= Priority()
f1=Fifo() 
r1 = RR(f1)
print( "agrego el fifo bien") 
r2 = RR(r1)
print( "si imprime esto es xq fallo")
'''
f= RR(Fifo())
mem = MMU(Paginacion(4)) ## TESTEAR BIEN SI ANDA EFECTIVAMENTE MEJOR Y PEOR 
k =Kernel(f,mem) #kernel recibe un schedule y una MMU que contiene algun algoritmo (asignacion o paginacion)
    
inst1 = Instruccion("hola", "cpu")
inst2 = Instruccion("como","cpu" )
inst3 = Instruccion("te ", "cpu")
inst4 = Instruccion("va?", "cpu")
inst5 = Instruccion("bien", "cpu")
inst6 = Instruccion("y a ", "cpu")
inst7 = Instruccion("vos?", "cpu")
inst8 = Instruccion("bien", "cpu")
inst9 = Instruccion("gracias","cpu" )
inst10 = Instruccion("de nada ^^", "cpu")

inst11 = Instruccion("Tareas a REALIZAR", "cpu")
inst12 = Instruccion("Limpiar pieza", "cpu")
inst13 = Instruccion("Baniarme", "cpu")
inst14 = Instruccion("Cocinar", "cpu")
inst15 = Instruccion("Lavar los platos", "cpu")

inst16 = Instruccion("Pasos para Iniciar sesion","cpu" )
inst17 = Instruccion("Ingresar usuario", "cpu")
inst18 = Instruccion("Ingresar password", "cpu")
inst19 = Instruccion("Darle enter :p ", "cpu")
inst20 = Instruccion("Revisar emails", "cpu")
inst21 = Instruccion("Cerrar sesion", "cpu")

prog1 = Programa("conversacion",1, [inst1, inst2, inst3,inst4,inst5,inst6,inst7,inst8,inst9,inst10],1)
prog2 = Programa("Cosas que tengo que hacer en el dia",2,[inst11,inst12,inst13,inst14,inst15],2)
prog3 = Programa("iniciar Sesion", 3,[inst16,inst17,inst18,inst19,inst20,inst21],6)

k.agregarProgramaAlDisco(prog1.getIdPrograma(), prog1)
k.agregarProgramaAlDisco(prog2.getIdPrograma(), prog2)
k.agregarProgramaAlDisco(prog3.getIdPrograma(), prog3)
k.start()
